package com.jacob.androidstudy.javanote;

import java.util.*;

/**
 * Map（映射/键值对）
 * 1. Map中的一条记录由两个对象组成。键——值。
 * 2. Key不能重复，Value可以重复。
 * 3. 加一条已存在的Key——Value进去，会更新原来的Key——Value。
 * 4.Map常用的实现类有：HashMap、HashTable(线程安全)、Properties(Key-Value都是String)
 * 
 */
public class $14_映射类 {


	public static void map(String[] args) {
//		得到一个Map对象，必须实例化一个Map的实现类，然后将对象赋给Map变量。
		Map hm1 = new HashMap(); //HashMap是Map的一个实现类，底层使用哈希散列结构。
		Map hm2 = new HashMap(10,0.75f); //第1个参数是hm2的初始化容量，第2个参数表示hm2的元素存放数达到总容量的75%就会扩容。

//		插入指定的键值对。如果此映射中，以前包含一个该键的映射关系，则用指定值替换旧值（当且仅当 m.containsKey(k) 返回 true 时，才能说映射 m 包含键 k 的映射关系）。 
		hm1.put("key", "value");
		
//		如果此映射包含满足 (key==null ? k==null : key.equals(k)) 的键 k 到值 v 的映射关系，则此方法返回 v；否则返回 null。（
		hm2.get("key");
		
//		如果此映射包含从满足 (key==null ? k==null :key.equals(k)) 的键 k 到值 v 的映射关系，则移除该映射关系。（该映射最多只能包含一个这样的映射关系。） 
		hm1.remove("key");
		
//		当且仅当此映射包含针对满足 (key==null ? k==null : key.equals(k)) 的键 k 的映射关系时，返回 true。
		hm1.containsKey("key");
		
//		当且仅当此映射至少包含一个对满足 (value==null ? v==null : value.equals(v)) 的值 v 的映射关系时，返回 true。
		hm2.containsValue(args);
		
//		返回此映射中的键-值映射关系数。
		hm1.size();
		
//		如果此映射未包含键-值映射关系，则返回 true。
		hm2.isEmpty();
		
//		删除所有元素。
		hm1.clear();
		hm2.clear();
		
		/**
		 * 用迭代器遍历Map
		 */
		for(Iterator tem=hm1.keySet().iterator();tem.hasNext();) {
			System.out.println(hm1.get(tem.next()));
		}
		
	}


}
